#ifndef __STACK_HEAD__
#define __STACK_HEAD__

#include <my_header.h>
#define EelementType int

// 栈节点结构
typedef struct node_s {
    EelementType data;
    struct node_s* pNext;
} node_t;

// 栈结构
typedef struct commandStack_s {
    node_t* top;    // 栈顶指针
    int size;       // 栈中元素个数
} stack_t;

// 初始化栈
int stackInit(stack_t* pStack);                    
// 压栈
int push_to_stack(stack_t* pStack, EelementType data);   
// 出栈
int pop_from_stack(stack_t* pStack);              
// 检查栈是否为空
int isStackEmpty(stack_t* pStack);                
// 销毁栈
void destroyStack(stack_t* pStack);               
// 获取栈顶元素
int getTop(stack_t* pStack, EelementType* pData);
// 打印栈内容
int printStack(stack_t* pStack);  

#endif